The present disclosure relates to database query processing and, more specifically, to forecasting the time after which a specific query access plan will be obsolete and to generating a replacement query access plan prior to that time.
Databases are well known systems for storing, searching, and retrieving information stored in a computer. One type of database used today is the relational database, which stores data using a set of tables that may be reorganized and accessed in a number of different ways. Relational databases are able to represent relationships between fields within separate tables, facilitating the retrieval of relevant information. Users may access information in relational databases using a relational database management system (DBMS).
Each table in a relational database may include a set of one or more columns with each column typically specifying a name and a data type. A query of a relational database may specify which columns to retrieve data from, how to join the columns together and conditions that must be satisfied for a particular data item to be included in a query result table. Current relational databases may require queries be composed in query languages. A widely used query language is Structured Query Language (SQL). However, other query languages are also used.
Once composed, a query is executed by the DBMS. Typically, the DBMS interprets the query to determine a set of steps that must be carried out to execute the query. These steps are together referred to as a query access plan (e.g., query execution plan). Statistics may be kept pertaining to data stored in a database. Such statistics provide data for building the query access plan. The DBMS may include a query optimizer (such as an SQL optimizer) which may select the query access plan that is likely to be the most efficient. When generated, a query access plan may contain the information necessary to retrieve rows for a query. This may include such details as the tables, indexes, parallelisms, join orders, and temporary tables, as well as the operations (e.g., transforms, sorting, grouping) to perform on each value in a column or row.